package cn.ywang.spring.framework.aop.intercept;

/**
 * @author BeatificWang
 * @date 2019/5/4 21:42
 */
public interface MethodInterceptor {


	/**
	 * Implement this method to perform extra treatments before and
	 * after the invocation. Polite implementations would certainly
	 * like to invoke {@link Joinpoint#proceed()}.
	 *
	 * @param mi the method invocation joinpoint
	 * @return the result of the call to {@link Joinpoint#proceed()};
	 * might be intercepted by the interceptor
	 * @throws Throwable if the interceptors or the target object
	 *                   throws an exception
	 */
	Object invoke(MethodInvocation mi) throws Throwable;

}
